#pragma once

namespace DeForm
{
	public ref class BrightnessEffectDescription sealed: IEffectDescription
	{
	public:

		BrightnessEffectDescription(Vector2^ whitePoint, Vector2^ blackPoint);
		BrightnessEffectDescription();

		virtual EffectType GetEffectType()
		{
			return EffectType::Brightness;
		}

		virtual int GetParametersCount()
		{
			return 2;
		}

		virtual EffectParameterValue^ GetParameter(int index)
		{
			switch (index)
			{
			case 0:
				return ref new EffectParameterValue(D2D1_BRIGHTNESS_PROP_WHITE_POINT, WhitePoint);
			case 1:
				return ref new EffectParameterValue(D2D1_BRIGHTNESS_PROP_BLACK_POINT, BlackPoint);
			}

			return nullptr;
		}

		property Vector2^ WhitePoint;
		property Vector2^ BlackPoint;
	};
}

